{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Construction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np \n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sign(x):\n",
    "    return (-1)**(x < 0)\n",
    "def make_standard(X):\n",
    "    means = X.mean(0)\n",
    "    stds = X.std(0)\n",
    "    return (X - means)/stds"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "class RegularizedRegression:\n",
    "    \n",
    "    def __init__(self, name = None):\n",
    "        self.name = name\n",
    "        \n",
    "    def record_info(self, X_train, y_train, lam, intercept, standardize):\n",
    "        \n",
    "        if standardize == True: # standardize (if specified)\n",
    "            X_train = make_standard(X_train)\n",
    "        if intercept == False: # add intercept (if not already included)\n",
    "            ones = np.ones(len(X_train)).reshape(len(X_train), 1) # column of ones \n",
    "            X_train = np.concatenate((ones, X_train), axis = 1)\n",
    "        self.X_train = np.array(X_train)\n",
    "        self.y_train = np.array(y_train)\n",
    "        self.N, self.D = self.X_train.shape\n",
    "        self.lam = lam\n",
    "        \n",
    "    def fit_ridge(self, X_train, y_train, lam = 0, intercept = False, standardize = False):\n",
    "        \n",
    "        # record data and dimensions\n",
    "        self.record_info(X_train, y_train, lam, intercept, standardize)\n",
    "        \n",
    "        # estimate parameters\n",
    "        XtX = np.dot(self.X_train.T, self.X_train)\n",
    "        XtX_plus_lam_inverse = np.linalg.inv(XtX + self.lam*np.eye(self.D))\n",
    "        Xty = np.dot(self.X_train.T, self.y_train)\n",
    "        self.beta_hats = np.dot(XtX_plus_lam_inverse, Xty)\n",
    "        self.y_train_hat = np.dot(self.X_train, self.beta_hats)\n",
    "        \n",
    "        # calculate loss\n",
    "        self.L = .5*np.sum((self.y_train - self.y_train_hat)**2) + (self.lam/2)*np.linalg.norm(self.beta_hats)**2\n",
    "        \n",
    "    def fit_lasso(self, X_train, y_train, lam = 0, n_iters = 10000, lr = 0.001, intercept = False, standardize = False):\n",
    "\n",
    "        # record data and dimensions\n",
    "        self.record_info(X_train, y_train, lam, intercept, standardize)\n",
    "        \n",
    "        # estimate parameters\n",
    "        beta_hats = np.random.randn(self.D)\n",
    "        for i in range(n_iters):\n",
    "            dL_dbeta = -self.X_train.T @ (self.y_train - (self.X_train @ beta_hats)) + self.lam*sign(beta_hats)\n",
    "            beta_hats -= lr*dL_dbeta \n",
    "        self.beta_hats = beta_hats\n",
    "        self.y_train_hat = np.dot(self.X_train, self.beta_hats)\n",
    "        \n",
    "        # calculate loss\n",
    "        self.L = .5*np.sum((self.y_train - self.y_train_hat)**2) + self.lam*np.sum(np.abs(self.beta_hats))\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "tags": [
     "input-hide"
    ]
   },
   "outputs": [],
   "source": [
    "mpg = sns.load_dataset('mpg') # load mpg dataframe\n",
    "mpg = mpg.dropna(axis = 0).reset_index(drop = True) # drop null values\n",
    "mpg = mpg.loc[:,mpg.dtypes != object] # keep only numeric columns\n",
    "X_train = mpg.drop(columns = 'mpg') # get predictor variables\n",
    "y_train = mpg['mpg'] # get outcome variable"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "lam = 10\n",
    "ridge_model = RegularizedRegression()\n",
    "ridge_model.fit_ridge(X_train, y_train, lam)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "lasso_model = RegularizedRegression()\n",
    "lasso_model.fit_lasso(X_train, y_train, lam, standardize = True)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "sns.scatterplot(ridge_model.y_train, ridge_model.y_train_hat)\n",
    "ax.set_xlabel(r'$y$', size = 16)\n",
    "ax.set_ylabel(r'$\\hat{y}$', rotation = 0, size = 16, labelpad = 15)\n",
    "ax.set_title(r'Ridge $y$ vs. $\\hat{y}$', size = 20, pad = 10)\n",
    "sns.despine()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "sns.scatterplot(lasso_model.y_train, lasso_model.y_train_hat)\n",
    "ax.set_xlabel(r'$y$', size = 16)\n",
    "ax.set_ylabel(r'$\\hat{y}$', rotation = 0, size = 16, labelpad = 15)\n",
    "ax.set_title(r'LASSO $y$ vs. $\\hat{y}$', size = 20, pad = 10)\n",
    "sns.despine()"
   ]
  }
 ],
 "metadata": {
  "celltoolbar": "Edit Metadata",
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
